package com.example.gui2;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Test2 {
    public static void main(String[] args) {
        // 第一种写法:提供实现类,创建实现类对象代表事件监听器对象
        // 1、创建一个窗口，有一个登录按钮。
        JFrame jf = new JFrame("登录窗口~~");

        JPanel panel = new JPanel(); // 创建一个面板
        jf.add(panel); // 将面板添加到窗口中

        jf.setSize(400, 300); // 设置窗口大小
        jf.setLocationRelativeTo(null); // 设置窗口居中
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置关闭窗口的默认操作: 关闭窗口退出程序

        JButton jb = new JButton("登录"); // 创建一个按钮
        panel.add(jb); // 将按钮添加到面板中

        // 给按钮绑定事件监听器对象
        jb.addActionListener(new MyListener(jf));

        // 第二种写法:直接使用匿名内部类的对象,代表事件监听对象
        /*jb.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(jf, "登录成功！");
            }
        });*/

        // 使用Lambda表达式简化
        // jb.addActionListener(e -> JOptionPane.showMessageDialog(jf, "登录成功！"));

        jf.setVisible(true); // 显示窗口
    }
}


class MyListener implements ActionListener {
    private JFrame jf;

    public MyListener(JFrame jf) {
        this.jf = jf;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(jf, "登录成功！");
    }
}